package com.ruoyi.mapper;

import java.util.List;
import com.ruoyi.domain.SysMaterialPlan;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
 * 预算材料总计划Mapper接口
 * 
 * @author ruoyi
 * @date 2020-07-08
 */
public interface SysMaterialPlanMapper 
{
    /**
     * 查询预算材料总计划
     * 
     * @param matId 预算材料总计划ID
     * @return 预算材料总计划
     */
    public SysMaterialPlan selectSysMaterialPlanById(Integer matId);

    /**
     * 查询预算材料总计划列表
     * 
     * @param sysMaterialPlan 预算材料总计划
     * @return 预算材料总计划集合
     */
    public List<SysMaterialPlan> selectSysMaterialPlanList(SysMaterialPlan sysMaterialPlan);

    /**
     * 新增预算材料总计划
     * 
     * @param sysMaterialPlan 预算材料总计划
     * @return 结果
     */
    public int insertSysMaterialPlan(SysMaterialPlan sysMaterialPlan);

    /**
     * 修改预算材料总计划
     * 
     * @param sysMaterialPlan 预算材料总计划
     * @return 结果
     */
    public int updateSysMaterialPlan(SysMaterialPlan sysMaterialPlan);

    /**
     * 删除预算材料总计划
     * 
     * @param matId 预算材料总计划ID
     * @return 结果
     */
    public int deleteSysMaterialPlanById(Integer matId);

    /**
     * 批量删除预算材料总计划
     * 
     * @param matIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteSysMaterialPlanByIds(String[] matIds);

    /**
     * 查询总项目对应的预算材料总计划
     */
    @Select("select * from sys_material_plan where m_id = #{mId}")
    @ResultMap("SysMaterialPlanResult")
    List<SysMaterialPlan> selectMaterialsRequisitionesLists(Long mId);

    /**
     * 查询材料类型
     */
    @Select("select * from sys_material_plan where m_id = #{mId} and mat_type = #{matType}")
    @ResultMap("SysMaterialPlanResult")
    SysMaterialPlan selectmatType(@Param("mId") Long mId,@Param("matType")String matType);


    /**
     * 查询材料分类
     */
    @Select("select * from sys_material_plan where m_id = #{mId} and mat_classification = #{matClassification}")
    @ResultMap("SysMaterialPlanResult")
    SysMaterialPlan selectmatClassification(@Param("mId") Long mId,@Param("matClassification") String matClassification);

    /**
     * 查询材料数据
     */
    @Select("select * from sys_material_plan where m_id = #{mId} and  mat_data = #{matData}")
    @ResultMap("SysMaterialPlanResult")
    SysMaterialPlan selectmatData(@Param("mId") Long mId,@Param("matData")String matData);

    /**
     * 查询材料详情
     */
    @Select("select * from sys_material_plan where m_id = #{mId} and mat_details = #{matDetails}")
    @ResultMap("SysMaterialPlanResult")
    SysMaterialPlan selectmatDetails(@Param("mId") Long mId,@Param("matDetails")String matDetails);

    //根据预算材料总计划外键id 查询材料数据名
    @Select("select m_id from sys_material_plan where mat_type =#{matclass}")
    @ResultMap("SysMaterialPlanResult")
    List<SysMaterialPlan> selectMatdetails(String matclass);
    /**
     * 根据id更新字段
     */
    @Update("update sys_material_plan set m_molecule =#{mMolecule} where mat_id=#{matId} and m_id=#{mId}")
    int updateSysMaterialPlans(@Param("mMolecule") long mMolecule,@Param("matId") Integer matId,@Param("mId") long mId);

    /**
     *
     * @param sysMaterialPlan
     * @return 导出所有
     */
    public List<SysMaterialPlan> selectall(SysMaterialPlan sysMaterialPlan);

}
